package com.example.glide.options;

import com.bumptech.glide.annotation.GlideExtension;
import com.bumptech.glide.annotation.GlideOption;
import com.bumptech.glide.load.MultiTransformation;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.request.BaseRequestOptions;
import com.example.glide.R;

import jp.wasabeef.glide.transformations.BlurTransformation;

@GlideExtension
public final class MyGlideExtension {

    private MyGlideExtension() {

    }

    //配置自定义的请求图片的参数的api 这里定义的是一个头像图片的请求参数 这样以后就可以复用此api
    @GlideOption
    public static BaseRequestOptions<?> applyAvatar(BaseRequestOptions<?> options, int size) {

        //利用导入的transformation的库进行高斯模糊
        BlurTransformation blurTransformation = new BlurTransformation(25, 1);

        //配置占位图片 加载失败图片 图片大小 裁剪类型
        return options.placeholder(R.mipmap.ic_launcher_round)
                .error(R.mipmap.ic_launcher_round)
                .override(size)
                //进行图片处理 高斯模糊 打码等操作
                //将高斯模糊处理的对象放进来
                //TODO .transform(blurTransformation)
                //裁剪样式
                //.fitCenter()
                // TODO .circleCrop();
                //.centerCrop();
                // TODO 如果有多种transform的图像转换操作时 需要用到MultiTransformation<>()
                //TODO 完成圆形裁剪 和高斯模糊两种图片处理操作
                .transform(new MultiTransformation<>(blurTransformation , new CenterCrop()));
    }
}
